/*
* Copyright (c) 2009, Ander Ruiz & Alexander Benito
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 * - Neither the name of Mauricio Aguilar O. nor the names of its contributors
 *   may be used to endorse or promote products derived from this software
 *   without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @author: Ander Ruiz y Alexander Benito
 * email  : anderruiz@yahoo.es
 * Date   : May 31 , 2009
 *
 */
package org.transFX.ext.swing;

import java.lang.Object;
import javafx.scene.CustomNode;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class TextFieldWithBackground extends CustomNode
{
    public-init var font:Font;
    public var stroke:Paint;
    public var strokeWidth:Float;
    public var fill:Paint;
    public var color:Color;
    public var backcolor:Color;
    public-init var width:Float;
    public-init var height:Float;

    public var editable:Boolean;

    public var text:String;

    public var verify: function(text:String):Void;
    public var enterPressed: function():Void;

    override function create():Node
    {
        Group
        {
            content:
            [
                Rectangle
                {
                    stroke: bind stroke
                    strokeWidth: bind strokeWidth
                    width: width
                    height: height
                    fill: bind fill
                }
                TextField
                {
                    editable: bind editable;
                    width: width
                    font: font
                    height: height
                    color: bind color.getAWTColor()
                    backcolor: bind backcolor.getAWTColor()
                    text: bind text with inverse
                    verify: verify
                    enterPressed: enterPressed
                }
            ]
        }
    }
}

function run():Void
{
    Stage
    {
        width: 400
        height: 100
        title: "EtrTextField Test"
        scene: Scene
        {
            content:
            [
                EtrTextField
                {
                    translateY: 10
                    translateX: 10
                    stroke: Color.RED
                    strokeWidth: 2
                    fill: Color.BLACK
                    color: Color.YELLOW
                    backcolor: Color.BLUE
                    width: 300
                    height: 40

                    text: "lalala";
                    verify: function(text:String)
                    {
                        println("verificando: {text}")
                    }

                    enterPressed: function()
                    {
                        println("enter pressed");
                    }

                }
            ]
        }
    }
}
